/**
 *  同步  异步？
 * js是一个单线程的语言（同一个时间只能做一件事）
 *
 * 同步：（这一件事不做完，就不往下走。阻塞）
 * 异步： 慢 (且结果不确定)
 *
 * 异步现象有哪些？
 * 1. 浏览器中： 定时器 http请求 dom操作
 * 2. node环境中：定时器 ... 没有dom操作  i/o 磁盘操作/数据库操作 (fs/mysql.query)
 *
 * 接下来，只要碰到异步现象 ，就要用promise封装 / async封装
 *
 * 函数中的return只能return 同步结果 (一个函数 只能有一个return)
 * 函数在执行的过程中，会将实参 传递给 形参
 *
 * axios 是一个http请求库：
 * 1. 可以用在浏览器中。
 * 2. 可以用在node后台中。
 */
// const axios = require('./node_modules/axios/dist/axios')

function myAuto(fn) {
  // axios.get('./data/data1.json').then(res => {
  //   fn && fn(res.data)
  // })
  // setTimeout(() => {
  //   fn && fn('hello world')
  // }, 2000)
}
// // 回调函数：一个函数  作为参数  传递给其他函数  执行
// myAuto((response) => {
//   console.log('response:...', response)
// })

function myPromiseAuto() {
  return new Promise((resolve, reject) => {
    axios.get('./data/data1.json').then(res => {
      resolve(res.data)
    })
    // setTimeout(() => {
    //   resolve('hello world')
    // }, 2000)
  })
}
myPromiseAuto().then(res => {
  console.log('res:....:1', res)
})

// async

async function myAsyncFn() {
  let data = await myPromiseAuto()
  return data;
}

myAsyncFn().then(res => {
  console.log('res:....:2', res)
})






